Generalized system for generating computer programs

ABSTRACT

A system for programming a computer wherein a computer program is formed into a plurality of self-contained modules or subroutines. Each module or subroutine includes a communications process, a computational process, a data storage process and a feedback process. Each process has a complete truth table and each process is internally mathematically complete. An embodiment of the invention is in the form of a screen generation compiler.

BACKGROUND OF THE INVENTION

This invention relates to a generalized system for generating programsor apparatus using a process model which simulates human intelligence.

In the past numerous techniques have been developed for developingsoftware for the control of a general purpose digital computer. Thesetechniques have utilized a number of different program languages such asPASCAL, BASIC, FORTH, etc. Each of these languages is, in effect, acompiler for converting input from the operator to a machine readableset of instructions. Each language has its own particular virtues withrespect to the operator and computer. For example, BASIC provides a verysimple means for the operator of a computer to enter instructions forcontrolling the operation of the computer. On the other hand FORTH isnot as simple for an operator to use and in fact requires an operatorwho is skilled in programming techniques. However, it is designed toconserve memory and operate rapidly on a data base. Other languages suchas COBOL and FORTRAN are designed for specific applications such asbusiness or scientific uses.

Given the existence of such computer languages, techniques have beendeveloped by programmers for developing programs designed to performspecific functions. These programming techniques include, among others,development of internal error detection routines to assist in thedebugging of the developed software. In the development of programmingtechniques programmers have learned to develop subroutines which consistof a set of instructions. These instructions are accessed from time totime by the program to perform a given routine or subroutine. Byestablishing such subroutines, memory is conserved because the samesubroutine can be utilized to perform the same function at a number ofdifferent times during the execution of the program. Thus, only onesubroutine needs to be written for a given task even though that taskmay be performed a number of different times during the course of theexecuting of a given program. No techniques, however, have beendeveloped for systematically designing a program in completely modularform such that each subroutine within any program is so complete that itcan be called upon by the general program to perform its functionwithout the need to modify in any respect the function of subroutines.The failure to produce such a systematic technique in the past is due,at least in part, to the failure to understand the process model ofhuman intelligence, and accordingly, it could not be simulated in acomputer environment. The present invention is directed to solving theproblem of providing an error free and efficient program system for thegeneration of software for controlling general purpose digitalcomputers.

The present invention is also directed to providing an improved systemfor the design of apparatus utilizing a sequence of steps in itsoperation.

SUMMARY OF THE INVENTION

Accordingly, the present invention relates to a system of generating amethod or apparatus for performing a sequence of steps formed of aseries of subprocesses hereafter called subroutines or modules. Eachsubroutine or module is made self-contained in that it includes acommunication process, a computational process, a data storage processand a feedback process. The communications process for each subroutineor module includes a series of commands capable of interfacing thesubroutine or module with any other subroutine or module of the program.The computational process is a sequence of commands which evaluatesinformation stored or entered into a computer or controller and which isto be used by the computer or controller. The data storage processincludes a series of commands for storing and recovering data for use bythe computational process and communications process. The feedbackprocess is a series of commands which performs the controlling functionfor each subroutine or module. Each subroutine or module having theaforementioned process commands must be complete in and of itself sothat it can be used as a building block for an overall system. To becomplete in and of itself, each element of every process must have acomplete truth table. In addition, mathematical completeness must existfor each process.

In the past processes, such as, programs were designed having a seriesof subroutines which could be analogized to the aforementioned modules.However, such subroutines were typically not internally complete andwere designed so that they could interface only with certain portions ofthe main program. Thus, they were not adaptable to be used asgeneralized building blocks for system software. In the presentinvention, each module is self-contained in that it includes each of theaforementioned process commands and accordingly can be utilized withoutmodification in a general software system. By the use of self-containedmodules substantially reduced execution time has been achieved and thetotal storage required for the program has been substantially reduced.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

As a general overview, in the present invention, four simultaneousprocesses function in compliance with two constraints to produce thenecessary and sufficient conditions for the generation of a non-uniquemethod or apparatus for performing a desired objective. This inventionis limited to those methods and apparatus for performing a deservedobjective which are capable of being defined in terms of theaforementioned processes and constraints. These processes andconstraints are discussed hereinbelow by way of example in connectionwith computer software. However, it should be appreciated that theinvention is also applicable to apparatus for performing a sequence ofsteps, such as, a robot or a manufacturing process.

In the development of a general process model for the design of computersoftware, four clearly defined categories of simultaneous processes mustexist. They are the communications process, the computational process,the data storage process, and the feedback process which updates thedata stage, computational and communications processes. Thecommunications process provides for communication between one module ofthe program or software and another module thereof. Accordingly, eachmodule of the software must provide for commands which will permitcommunication between itself and an external module or program. Thecomputational process serves the purpose of operating on information ordata stored either within the program module itself or externallythereof and communicated to the module by way of the communicationsprocess. Each module of the program must include the computationalprocess so that it does not rely upon a computational process of othermodules or of an external program. The data storage process includescommands for the purpose of the preservation and recovery of informationor data. The data may be stored within the program module itself or moregenerally outside of the program. The data storage process, however,provides the instructions for accessing such data so that the data canbe operated on by the computational process. The data storage process insuch a generalized instance would, of course, rely upon thecommunications process for retrieving and storing the information ordata. In addition, the results of the computational process are operatedon by the data storage process to store same as appropriate. Thefeedback process interrelates with the data storage, computational, andcommunications processes in order to be internally complete and not relyupon outside program steps for execution of the function for which theprogram module was designed.

In addition to the four processes required in each of the programmodules, the processes are constrained such that each element of everyprocess has a complete truth table and that each process be internallymathematically complete. The truth table constraint guarantees that theprocesses performed are in fact logically accurate. The mathematicalcompleteness constraint guarantees that the process is unique and notduplicative and open ended.

As an example of the development of a program system utilizing theaforementioned systematic steps, a screen generation compiler has beendeveloped. The compiler serves the purpose of declaring and defining thedata input screens to be used in a particular program. In addition, itassembles data in a proper format so that it can be presented to theindividual operator via a monitor or printout or in the alternative tothe computer internally for operational steps to be performed thereon.In the case of the screen generation compiler, the program compiles datafor use by another program utilized within the computer. The functionsperformed include among others, ASCII to binary conversion, binary toASCII conversion, the insertion of commas into number strings at thethousandths point, the insertion of leading and trailing signs, theinsertion of brackets and braces around negative numbers, etc. Otherfundamental routines provided in the screen generation compiler are themanagement of color display and the formatting of data for display on amonitor. A program listing of the screen generation compiler in objectcode has been deposited with the U.S. Patent and Trademark Officepursuant to its guidelines.

The screen generator compiler is structured in the aforementionedmodular form so that it comprises a plurality of internally completemodules which together form the program. As exemplified by the screengeneration compiler, a new and improved programming system has beendesigned for simplifying the program development techniques by theself-contained modular form of programming described herein. Substantialoperational time for executing the program has been saved. In addition,program storage space has been reduced because of the modular design ofthe present programming system. Moreover, because each module isinternally complete, program debugging time has been reduced.

While the present invention has been disclosed in connected with apreferred embodiment thereof, it should be appreciated that there may beother embodiments of the invention which fall within the spirit andscope of the invention as defined by the appended claims. ##SPC1##PG,125

What is claimed is:
 1. An computer software system having set ofinstructions for controlling a general purpose digital computer inperforming a desired function comprising:a set of instructions formedinto each of a plurality of modules, each module comprising:acommunications process, a computational process, a data storage process,and a feedback process.
 2. The system of claim 1, wherein each processis internally mathematically complete.
 3. The system of claim 1, whereineach process satisfies a complete truth table.
 4. An computer programhaving a plurality of instructions for controlling the operation of acomputer to perform a function comprising:a plurality of sets ofinstructions grouped to form a program module; each program modulecomprising a first set of instructions for defining a communicationsprocess, a second set of instructions defining a computational process,a third set of instructions defining a data storage process, and afourth set of instructions defining a feedback process; and generating aplurality of said program modules, said plurality of said programmodules forming a complete program, each program module accessing otherprogram modules in said program.
 5. The computer program of claim 4,wherein each of said program modules is internally mathematicallycomplete and wherein each process satisfies a complete truth table. 6.An process for generating a computer program having a plurality ofinstructions for controlling operation of a computer to form a function,said process comprising:forming a plurality of instructions for forminga program module, generating within each program module a first set ofinstructions defining a communications process, a second set ofinstructions defining a computational process, a third set ofinstructions defining a data storage process, and a fourth set ofinstructions defining a feedback process; and generating a plurality ofsaid program modules to form a complete program, each program moduleaccepting other program modules in said program.
 7. The process of claim6, further comprising the step of forming each process to be internallymathematically complete and to have a complete truth table.
 8. An systemfor generating or controlling an apparatus or manufacturing processcomprising:a set of instructions formed into each of a plurality ofmodules, each module comprisinga communication process, a computationalprocess, a data storage process, and a feedback process;wherein eachprocess is internally mathematically complete and wherein each processsatisfies a complete truth table.